<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>  </title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
    <div id="div1">
        <button @click="change1">改变bool1</button>
        <p v-demo1="bool1">vue自定义指令1</p>
        <button @click="change2">改变bool2</button>
        <p v-demo2="bool2">vue自定义指令2</p>
    </div>
</body>
<script>
    new Vue({
        el:'#div1',
        
        data:{
            bool1:true,
            bool2:true,
        },
        
        methods:{
            
            change1(){
                this.bool1 = !this.bool1;
            },

            change2(){
                this.bool2 = !this.bool2;
            }
        },
        
        directives:{
            
            demo1:{
                
                bind(el,binding){
                    if(binding.value==true){
                        el.style.display = 'block';
                    }
                    else{
                        el.style.display = 'none';
                    }
                },

                update(el,binding){
                    if(binding.value==true){
                        el.style.display = 'block';
                    }
                    else{
                        el.style.display = 'none';
                    }
                }
            },

            demo2:{
                
                bind(el,binding){
                    if(binding.value==true){
                        el.style.display = 'block';
                    }
                    else{
                        el.style.display = 'none';
                    }
                },

                update(el,binding){
                    if(binding.value==true){
                        el.style.display = 'none';
                    }
                    // else{
                    //     el.style.display = 'none';
                    // }

                    //通过这里设置能看出来，一开始整个页面两个p节点都是显示的，但是当我改变bool1的时候，触发demo1的更新，然后p1隐藏，可同时，我的demo2的更新也被触发了，因为他是同时触发的，只要改变其中任意一个自定义指令绑定的值发生改变的时候，就会触发所有自定义指令里面的update方法
                }
            },

        },
    })
</script>
</html>
